The popularity of the World Wide Web, the Java™ programming language, and relational database systems have jointly enabled user applications to be economically developed, distributed, and maintained anywhere throughout the world. FIG. 5 illustrates one configuration of a web-based application, whose execution is distributed between a client system 500 and a server system 510 interconnected by an Internet Protocol (IP) network. In this configuration, a web browser 501 executing at the client system 500 is responsible for presenting the application's user-interface to a user and enabling communications with a web server 511 executing on the server system 510 in accordance with the Hypertext Transfer Protocol (HTTP). The web browser 501 can also download from the web server 511 executable code 503 such as bytecodes compiled from a program developed in the Java programming language. The downloaded Java code 503 can be executed from within the web browser 501 to implement the application logic of the web-based application.
The server system 510 may also host a relational database 515, which organizes information into tables of rows and columns. A relational database server 513 is provided to receive database commands and statements that request data, e.g. in the Structured Query Language (SQL) and fetch the requested data from the tables in the relational database 515.
One source of complexity in this model is that the web-based application uses downloaded Java code 503, which is written in an object-oriented programming language, but the relational database server 513 is responsive to SQL commands, statements, and queries, which are expressed in a fourth generation language (4GL). Although it is possible to code a Java application to manipulate SQL statements directly, it is more convenient at the application programming level to let a library do all this processing and simply let the application programmer to work with Java objects.
Accordingly, an Application Program Interface (API) 505 is provided to furnish the Java code 503 with an object-oriented interface to the functionality of the relational database server 513. Calls to the API 505 from the Java code 503 use objects and methods as in Java and are processed by routines in a Java Database Connectivity (JDBC) driver 507 to form appropriate SQL statements. For example, the JDBC driver 507 is responsible for opening a connection over the network to the database server 513, formulating SQL statements for submission to the database server 513, and returning result sets back to the application executing the Java code 503.
Although the JDBC driver 507 presents a convenient interface to the relational database server 513 from a programming perspective, the JDBC driver 507 nevertheless imposes a performance penalty by its overhead in creating Java objects and in round-trip network communications. Because performance is vital to users, there is a need for improving the performance of web-based database applications without losing the convenience provided by encapsulating the manipulation of relational database statements in a driver.